

import java.text.DecimalFormat;

/**
 * Integer工具类
 */
public class DoubleUtil {

    public static enum FORMAT_TYPE {
        // 总是有两位小数
        TYPE_DOUBLE_TWO_ALWAYS("0.00"),
        // 如果需要,则显示两位,默认一维
        TYPE_DOUBLE_ONE_OR_TOW("0.0#"),
        // 如果有小数,则显示两位
        TYPE_DOUBLE_ZERO_TOW("0.##"),
        ;


        private String format;

        FORMAT_TYPE(String format) {
            this.format = format;
        }
    }

    // 格式化类型
    private static FORMAT_TYPE type = FORMAT_TYPE.TYPE_DOUBLE_TWO_ALWAYS;

    /**
     * 格式化小数
     *
     * @param d
     * @return
     */
    public static String formatDouble(Double d) {
        if (d == null) {
            return formatDouble(0);
        }
        return formatDouble(d.doubleValue());
    }

    /**
     * 格式化小数
     *
     * @param d
     * @return
     */
    public static String formatDouble(double d) {
       return formatDouble(d, type);
    }

    /**
     * 格式化小数
     *
     * @param d
     * @return
     */
    public static String formatDouble(double d,FORMAT_TYPE value) {
        if (d == 0) {
            return "0";
        }
        DecimalFormat df = new DecimalFormat(value.format);
        return df.format(d);
    }


    public static double parseDouble(String string) {
        if (TextUtil.isNotValid(string)) {
            return 0;
        }
        double result = 0;
        try {
            result = Double.parseDouble(string);
        } catch (Exception e) {
            e.printStackTrace();
            result = 0;
        }
        return result;
    }

    /**
     * 获取可用于的值
     *
     * @param d
     * @return
     */
    public static double getValue(Double d) {
        if (d == null) {
            return 0;
        }
        return d;
    }

}
